<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
// [js] 举例说明什么是IIFEs？它有什么好处？

Instantly Invoked Function Expression 即时调用函数表达式

示例
;(function () {
    // ... statements
    return ...
)()
最好在 IIFE 前追加分号 ; 来避免解析时与前一个表达式合并出现问题
好处
创建一个局部作用域隔离变量；但在 ES6 拥有了块级作用域后变得没有必要，可以用语句块 { ... } 配合 let/const 替代
将运行逻辑转化为可求值的表达式，弥补 JavaScript 基本逻辑语句不是表达式的缺陷
e.g.
const a = (() => {
    if (...) return 1
    else return 0
})()
基本等价于
let a
if (...) a = 1
else a = 0
</script>
</html>